package com.shujia.wyh.day07.ketang;

/*
    内部类：顾名思义，定义在类中的类，称之为内部类

    根据在类中定义的位置不同，分为两种内部类：
        1、成员内部类：定义在类中方法外的类
        2、局部内部类：定义在方法内的类

 */

class Outer{
    static int a = 10;
    private static int b = 20;

    //成员内部类
    static class Inner{
        int a = 100;
        public void fun1(){
            int a = 200;
            System.out.println(a);
            System.out.println(b);
            System.out.println(this.a);
            System.out.println(Outer.a);
        }
    }

    //成员方法
    public void show1(){
        Inner inner = new Inner();
        inner.fun1();
    }


}

public class InnerClassDemo1 {
    public static void main(String[] args) {
        //成员内部类创建对象的语句格式：
        //外部类名.内部类名 对象名 = new 外部类名().new 内部类名();
//        Inner inner = new Inner();
//        Outer.Inner oi1 = new Outer().new Inner();
//        oi1.fun1();
//        Outer outer = new Outer();
//        outer.show1();

        //如果成员内部类是静态的该如何创建对象
        //外部类名.内部类名 对象名 = new 外部类名.内部类名();
        Outer.Inner oi2 = new Outer.Inner();
        oi2.fun1();

    }
}
